package admin

import (
	"e_mall_server/models"
	"e_mall_server/service"
	"fmt"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"strconv"
)

/**
 * @Author: zhaobin
 * @Description TODO
 * @Date: 2022-04-29 19:22
 */

// GetAccessList 获取权限列表接口
func GetAccessList(c *gin.Context) {
	accessList, err := service.GetAccessList()
	if err != nil {
		zap.L().Error("service.GetAccessList() failed", zap.Error(err))
		ResponseError(c, "查询权限列表失败")
		return
	}
	ResponseSuccess(c, accessList)
}

// AddAccess 添加权限信息接口
func AddAccess(c *gin.Context) {
	access := models.Access{}
	if err := c.ShouldBind(&access); err != nil {
		zap.L().Error("AddAccess with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}

	// 业务逻辑处理
	if err := service.AddAccess(&access); err != nil {
		zap.L().Error("service.AddAccess(&Access) failed", zap.Error(err))
		ResponseError(c, "增加权限失败 请重试")
		return
	}

	// 创建成功返回响应
	ResponseSuccess(c, nil)

}

// UpdateAccess 修改权限信息接口
func UpdateAccess(c *gin.Context) {
	access := models.Access{}
	if err := c.ShouldBind(&access); err != nil {
		zap.L().Error("UpdateAccess with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
		return
	}
	fmt.Println("权限信息")
	fmt.Println(access)
	// 业务逻辑处理
	if count := service.UpdateAccess(&access); count > 0 {
		// 创建成功返回响应
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, "修改权限失败 请重试")
}

// DeleteAccess 删除权限接口
func DeleteAccess(c *gin.Context) {
	id, err := strconv.ParseInt(c.Param("id"), 10, 64)
	if err != nil {
		zap.L().Error("DeleteAccess with invalid param", zap.Error(err))
		ResponseError(c, "传入参数错误")
		return
	}
	count, err := service.DeleteAccessById(id)
	if count > 0 {
		ResponseSuccess(c, nil)
		return
	}
	ResponseError(c, err.Error())
}

// GetAccessDetailById 通过id查询权限信息
func GetAccessDetailById(c *gin.Context) {
	idStr := c.Param("id")
	id, err := strconv.ParseInt(idStr, 10, 64)
	if err != nil {
		zap.L().Error("GetAccessDetailById with invalid param", zap.Error(err))
		ResponseError(c, "请求参数错误")
	}
	access, err := service.GetAccessDetailById(id)
	if err != nil {
		zap.L().Error("service.GetAccessDetailById(id) failed", zap.Error(err))
		ResponseError(c, "获取权限信息错误")
		return
	}
	ResponseSuccess(c, access)
}
